package com.pfdu.simplescheduler.common;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

import java.math.BigInteger;
import java.time.LocalDateTime;
import java.util.Date;

@Data
public class Task {

    /**
     * 数据库ID
     */
    private BigInteger id;

    /**
     * 状态，0表示未开始，1表示待执行，2表示执行中，3表示执行异常，4表示已完成
     */
    private TaskStatus status = TaskStatus.NOT_STARTED;

    /**
     * 乐观锁标识
     */
    private int version;

    /**
     * 创建时间
     */
//    @Setter(onMethod = {})
    private Date createTime = new Date();

    /**
     * 更新时间
     */
    private LocalDateTime updateTime = LocalDateTime.now();

    /**
     * 任务实体，即任务的实际内容，eg.{businessId:123456789}
     */
    private String content;

    /**
     * 任务类型，每一种类型都对应唯一的一个 TaskInvoker实现类
     */
    private String type;


    @JsonProperty(value = "CREATE_TIME")
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    @JsonProperty(value = "UPDATE_TIME")
    public void setUpdateTime(LocalDateTime updateTime) {
        this.updateTime = updateTime;
    }

}
